
    % 根据学号计算起点和终点
    % last_two_digits = mod(145347, 100);
    % start_node = start;

    start_node = input('问题一：请输入起点序号：');
    end_node = input('问题一：请输入终点序号');
    
    if start_node == 0
        start_node = 1;
    end

    if end_node == 0
        end_node = 1;
    end
    
    % Sioux Falls网络数据 - 有向边及其长度
    % 格式: [起点 终点 长度]
    edges = reg();
    
    % 创建有向图对象
    G = digraph(edges(:,1), edges(:,2), edges(:,3));
    
    % 计算最短路径
    [shortest_path, shortest_length] = shortestpath(G, start_node, end_node);
    
    % 显示结果
    fprintf('起点: %d\n', start_node);
    fprintf('终点: %d\n', end_node);
    fprintf('最短路径长度: %.2f\n', shortest_length);
    fprintf('最短路径: ');
    disp(shortest_path);
    
    % 可视化有向图
    figure;
    h = plot(G, 'EdgeLabel', G.Edges.Weight, 'ArrowSize', 10);
    
    % 高亮显示最短路径
    for i = 1:length(shortest_path)-1
        highlight(h, shortest_path(i), shortest_path(i+1), 'EdgeColor', 'r', 'LineWidth', 2);
    end
    
    % 标记起点和终点
    highlight(h, start_node, 'NodeColor', 'g', 'MarkerSize', 8);
    highlight(h, end_node, 'NodeColor', 'b', 'MarkerSize', 8);
    
    title(sprintf('Sioux Falls网络从节点%d到节点%d的最短路径', start_node, end_node));


